#ifndef _TLVDECODER_H_
#define _TLVDECODER_H_

class CTLVDecoder
{
public:
    CTLVDecoder();
    virtual ~CTLVDecoder();

    virtual uint16_t decode(uint8_t* buffer, uint16_t length);

    virtual void getTag(uint16_t tag, const uint8_t* value, uint16_t length);
    virtual void getTag(uint16_t tag, int32_t&  value);
    virtual void getTag(uint16_t tag, int64_t&  value);
    virtual void getTag(uint16_t tag, uint32_t& value);
    virtual void getTag(uint16_t tag, uint64_t& value);
    virtual void getTag(uint16_t tag, float_t&  value);
    virtual void getTag(uint16_t tag, double_t& value);

private:
    std::vector<CTLVBase*> m_vecTLV;
};

#endif
